/**
 * Created by xnr on 19/12/30.
 */


const validate = {
    /* 邮箱校验*/
    validateeMail(str) {
        const reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/
        return reg.test(str)
    },
    /* 合法uri*/
    validateURL(textval) {
        const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
        return urlregex.test(textval)
    },
    /* 小写字母*/
    validateLowerCase(str) {
        const reg = /^[a-z]+$/
        return reg.test(str)
    },
    /* 大写字母*/
    validateUpperCase(str) {
        const reg = /^[A-Z]+$/
        return reg.test(str)
    },
    /* 大小写字母*/
    validatAlphabets(str) {
        const reg = /^[A-Za-z]+$/
        return reg.test(str)
    },
    // 电话号码校验
    validateTelephone(value, callback) {
        var isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/
        var isMob = /^((\+?86)|(\(\+86\)))?(1[0-9]{10})$/
        if (!isMob.test(value) && !isPhone.test(value)) {
            //callback(new Error('请输入符合规范的电话号码'))
            return false
        } else {
            return true
        }
    },
    // 手机号码校验
    validateMobilePhone(value, callback) {
        var isMob = /^((\+?86)|(\(\+86\)))?(1[0-9]{10})$/
        if (!isMob.test(value)) {
            //new Error('请输入正确的手机号码')
            return false
        } else {
            return true;
        }
    },
    // 密码校验
    validatePass(value, callback) {
        var pattern = /(?!^(\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\w~!@#$%^&*?]{6,20}$/
        if (!pattern.test(value)) {
            //new Error('字母，数字，标点符号至少包含两种，长度为6-20个字符')
            return false
        } else {
            return true
        }
    },
    // 校验小数后2位
    floatValidate(value, callback) {
        var pattern = /^([0-9]\d?(\.\d{1,2})?|100)$/
        if (!pattern.test(value)) {
            //new Error('请输入保留100以内的小数点后2位数字')
            return false
        } else {
            return true
        }
    },
    // 校验单价，精确到小数点后2位
    unitPriceValidate(value, callback) {
        var pattern = /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/
        if (!pattern.test(value)) {
            //new Error('请输入整数或者保留两位小数')
            return false
        } else {
            return true
        }
    },
    // 校验总价，精确到小数点后5位
    totalPriceValidate(value, callback) {
        var pattern = /(^[1-9]\d*(\.\d{1,5})?$)|(^0(\.\d{1,5})?$)/
        if (!pattern.test(value)) {
            //new Error('请输入整数或者保留五位小数')
            return false
        } else {
            return true
        }
    },
    // 校验单重，精确到小数点后2位
    unitWeightValidate(value, callback) {
        var pattern = /^(([1-9]{1}\d*)|(0{1}))(\.\d{2})$/
            //console.log('pattern=' + pattern)
            //console.log('value=' + value)
        if (!pattern.test(value)) {
            //new Error('请输入整数或者保留两位小数')
            return false
        } else {
            return true
        }
    },
    // 正数校验
    positiveNumValidate(value, callback) {
        var pattern = /^(\+)?\d+(\.\d+)?$/
        if (!pattern.test(value)) {
            //new Error('请输入正数')
            return false
        } else {
            return true
        }
    },
    // 整数校验
    integerNumValidate(value, callback) {
        var pattern = /^(\+)?\d+$/
        if (!pattern.test(value)) {
            //new Error('请输入正整数')
            return false
        } else {
            return true
        }
    }
}

const format = {
    Date(timestamp, formats) {
        // formats格式包括
        // 1. Y-m-d
        // 2. Y-m-d H:i:s
        // 3. Y年m月d日
        // 4. Y年m月d日 H时i分
        formats = formats || 'Y-m-d';
        var zero = function(value) {
            if (value < 10) {
                return '0' + value;
            }
            return value;
        };
        if (typeof(timestamp) == typeof("")) {
            timestamp = timestamp.replace(/-/g, "/").replace(/\.0/g, "")
        }
        var myDate = timestamp ? new Date(timestamp) : new Date();
        var year = myDate.getFullYear();
        var month = zero(myDate.getMonth() + 1);
        var day = zero(myDate.getDate());
        var hour = zero(myDate.getHours());
        var minite = zero(myDate.getMinutes());
        var second = zero(myDate.getSeconds());
        return formats.replace(/Y|m|d|H|i|s/ig, function(matches) {
            return ({
                Y: year,
                m: month,
                d: day,
                H: hour,
                i: minite,
                s: second
            })[matches];
        });
    }
}

function ossUri(oss, uri, type) {
    if (!uri)
        return "";
    if (uri.length >= 4 && uri.indexOf("http") > -1)
        return uri;
    var url = oss + uri;
    if (type) {
        switch (type) {
            case 'd':
                url += '';
                break;
            case 'l':
                url += "/";
                url += '800';
                break;
            case 'f':
                url += "/";
                url += '400';
                break;
            case 'm':
                url += "/";
                url += '250';
                break;
            case 's':
                url += "/";
                url += '120';
                break;
        }
    }
    return url;
}
export {
    validate,
    format,
    ossUri
}